/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package modelo;

/**
 *
 * @author andre
 */
public class Token {

    private String token;
    private String lexema;
    private int linha;
    private int coluna;
    private boolean bemFormado;
    private int estadoFinal;

    public Token() {
    }

    public Token(int estadoFinal, String lexema, int linha, int coluna, boolean bemFormado) {
        
        this.estadoFinal = estadoFinal;
        this.lexema = lexema;
        this.linha = linha;
        this.coluna = coluna;
        this.bemFormado = bemFormado;
        
        setToken(estadoFinal);
    }

    public boolean isBemFormado() {
        return bemFormado;
    }

    public void setBemFormado(boolean bemFormado) {
        this.bemFormado = bemFormado;
    }

    public int getColuna() {
        return coluna;
    }

    public void setColuna(int coluna) {
        this.coluna = coluna;
    }

    public String getLexema() {
        return lexema;
    }

    public void setLexema(String lexema) {
        this.lexema = lexema;
    }

    public int getLinha() {
        return linha;
    }

    public void setLinha(int linha) {
        this.linha = linha;
    }

    public String getToken() {
        return token;
    }

    public void setToken(String token) {
        this.token = token;
    }

    public void setToken(int estadoFinal) {

        switch (estadoFinal) {
            case 2: { // 
                this.token = "identificador bem formado";
                break;
            }
            case 3: { // 
                this.token = "identificador mal formado";
                break;
            }
            case 6: { // 
                this.token = "inteiro bem formado";
                break;
            }
            case 8: { // 
                this.token = "real mal formado";
                break;
            }
            case 9: { // 
                this.token = "inteiro mal formado";
                break;
            }
            case 13: { // 
                this.token = "comentário de bloco bem formado";
                break;
            }
            case 14: { // 
                this.token = "opeador de divisão";
                break;
            }
            case 15: { // 
                this.token = "comentário de linha";
                break;
            }
            case 17: { // 
                this.token = "real bem formado";
                break;
            }
            case 19: { // 
                this.token = "cadeia constante bem formada";
                break;
            }
            case 20: { // 
                this.token = "cadeia constante mal formada";
                break;
            }
            case 23: { //
                this.token = "caractere constante bem formado";
                break;
            }
            case 24: { // 
                this.token = "caractere constnte mal formado";
                break;
            }
            case 25: { // 
                this.token = "delimitado ponto e vigula";
                break;
            }
            case 26: { // 
                this.token = "delimitador virgula";
                break;
            }
            case 27: { // 
               this.token = "delimitador abre parenteses";
                break;
            }
            case 28: { // 
                this.token = "delimitador fecha parenteses";
                break;
            }
            case 29: { // 
               this.token = "delimitador abre chaves";
                break;
            }
            case 30: { // 
                this.token = "delimitador fecha chaves";
                break;
            }
            case 31: { // 
                this.token = "delimitador abre colchetes";
                break;
            }
            case 32: { // 
                this.token = "delimitador fecha colchetes";
                break;
            }
            case 34: { // 
                this.token = "operador de incremento";
                break;
            }
            case 35: { // 
                this.token = "operador de soma";
                break;
            }
            case 37: { // 
                this.token = "operador de decremento";
                break;
            }
            case 38: { // 
                this.token = "operador de subtração";
                break;
            }
            case 39: { // 
                this.token = "operador de multiplicação";
                break;
            }
            case 41: { // 
                this.token = "operador de atribuição";
                break;
            }
                
            case 42: { // 
                this.token = "operador de comparação";
                break;
            }
            case 44: { // 
                this.token = "operador de diferença";
                break;
            }
            case 45: { // 
               this.token = "operador mal formado";
                break;
            }
            case 47: { // 
               this.token = "operador maior";
                break;
            }
            case 48: { // 
                this.token = "operador maior igual";
                break;
            }
            case 50: { // 
                this.token = "operador menor igual";
                break;
            }

            case 51: { // 
                this.token = "operador menor";
                break;
            }
            case 56: { // 
                this.token = "operador lógico OU";
                break;
            }
            case 57: { // 
                this.token = "operador lógico E";
                break;
            }
        }
    }
}
